#作业4：冒泡排序
def paixu(arr):
    n = len(arr)
    for i in range(n):
        for j in range(0, n-i-1):
            if arr[j] > arr[j+1] :
                arr[j], arr[j+1] = arr[j+1], arr[j]
    return arr

"""
作业3：列表、字典、元组、集合 增删改查
"""
#列表的增删改查实现
class List:
    def __init__(self, list):
        self.list = list

#增
    def add(self, item):
        self.list.append(item)
        return self.list
#删
    def delete1(self, item):
        self.list.remove(item)
        return self.list
#删
    def delete2(self, item):
        del self.list[item]
        return self.list
#改
    def modify(self, index, item):
        self.list[index] = item
        return self.list
#查
    def search(self, item):
        if item in self.list:
            return "存在"
        else:
            return "不存在"

#字典的增删改查实现
class Dict:
    def __init__(self, dct):
        self.dct = dct

    def add(self, key, value):
        self.dct[key] = value
        return self.dct

    def delete(self, key):
        del self.dct[key]
        return self.dct

    def modify(self, key, value):
        self.dct[key] = value
        return self.dct

    def search(self, key):
        if key in self.dct:
            return self.dct[key]
        else:
            return None

#元组的增删改查实现
class Tuple:
    def __init__(self, zu):
        self.zu = zu

    def search(self, item):
        for item in self.zu:
            print(item)

#集合的增删改查实现
class Set:
    def __init__(self, st):
        self.st = set(st)

    def add(self, item):
        self.st.add(item)
        return self.st

    def delete(self, item):
        if item in self.st:
            self.st.remove(item)
        return self.st

    def search(self, item):
        if item in self.st:
            print(f"项 {item} 在集合中")
        else:
            print(f"项 {item} 不在集合中")

    def get_all(self):
        return self.st

def list():
    list = [1, 2, 3, 4, 5]
    print(f"原列表：{list}")
    l = List(list)
    print(f"增加一个数字6：{l.add(6)}")
    print(f"删除一个数字2：{l.delete1(2)}")
    print(f"删除第一个数字：{l.delete2(0)}")
    print(f"第二个数字变为7：{l.modify(1, 7)}")
    print(f"查询数字7是否存在：{l.search(7)}")
    print("\n")

def dict():
    dct = {'name1': '张三', 'name2': '李四', 'name3': '王五', 'name4': '赵六'}
    print(f"原字典：{dct}")
    # 定义字典
    d = Dict(dct)
    print(f"增加一个键值对'name5':'孙七'：{d.add('name5', '孙七')}")
    print(f"删除键'name1'：{d.delete('name1')}")
    print(f"修改键'name2'的值为李老四：{d.modify('name2', '李老四')}")
    print(f"查询键'name3'的值：{d.search('name3')}")
    print("\n")

def tuple():
    zu = (1, 2, 3, 4, 5)
    print(f"设置的元组为：{zu}")
    t = Tuple(zu)
    print("分别输出元组中的元素：")
    t.search(1)
    print("\n")

def set1():
    s = Set({1, 2, 3, 4, 5})
    print(f"初始集合：{s.get_all()}")
    s.add(6)
    s.delete(2)
    s.search(3)
    s.search(2)
    print(f"修改后集合：{s.get_all()}")

if __name__ == '__main__':
    #冒泡排序
    arr = [64, 34, 25, 12, 22, 11, 90, 55, 44, 88, 77, 1, 2, 3, 6, 9, 41]
    print(f"排序前为：{arr}")
    print(f"排序后为：{paixu(arr)}")
    print("\n")

    #列表的增删改查
    list()

    #字典的增删改查
    dict()

    #元组的查
    tuple()

    #集合的增删改查
    set1()


#作业2：
class Animal:
    def eat(self):
        print("吃")
    def drink(self):
        print("喝")
    def sleep(self):
        print("睡觉")

class Dog(Animal):
    def bark(self):
        print("汪汪叫")

if __name__ == "__main__":
  dog = Dog()
  dog.eat()
  dog.drink()
  dog.bark()
  dog.sleep()

"""
需求
1.设计一个Game 类
2.属性:
定义一个 类属性 top_score 记录游戏的 历史最高分定义一个 实例属性 player _name 记录 当前游戏的玩家姓名
3.方法:
静态方法 show help 显示游戏帮助信息
类方法 show top score 显示历史最高分
实例方法 start game 开始当前玩家的游戏
4.主程序步骤
  1.查看帮助信息
  2.查看历史最高分
  3.创建游戏对象，开始游戏
  4.统计所有实例化游戏的数量
"""
class Game:
  __instances__ = 0
  top_score = 0
  def __init__(self, player_name):
        self.player_name = player_name
        Game.__instances__ += 1

  @staticmethod
  def show_help():
      print("游戏帮助信息:")

  @classmethod
  def show_top_score(cls):
        print("历史最高分:", cls.top_score)

  def start_game(self):
        print(f"欢迎{self.player_name}开始游戏")
        score = int(input("请输入你的得分："))
        if score > Game.top_score:
            Game.top_score = score
            print("恭喜你，你破了历史最高分！")
        else:
            print("很遗憾，你没有破记录！")


# 主程序
if __name__ == '__main__':
  Game.show_help()
  print("历史最高分:", Game.top_score ,"\n")

  game1 = Game("张三")
  game2 = Game("李四")
  game3 = Game("王五")

  game1.start_game()
  game2.start_game()
  game3.start_game()

  print("总共实例化了", Game.__dict__["__instances__"], "个游戏对象")